package com.avecsys.quotemanager.service.common;

import java.util.List;

import com.avecsys.quotemanager.exception.BusinessException;
import com.avecsys.quotemanager.exception.SystemConfigurationException;
import com.avecsys.quotemanager.exception.TechnicalException;
import com.avecsys.quotemanager.pojos.BuyerUsersPojo;
import com.avecsys.quotemanager.pojos.CountryMasterPojo;
import com.avecsys.quotemanager.pojos.SupplierUsersPojo;
import com.avecsys.quotemanager.pojos.SystemUsersPojo;
import com.avecsys.quotemanager.utils.TransactionStatus;

public interface CommonService
{

	/**
	 * Method to return all the Countries
	 * 
	 * @param countryMasterPojo
	 * @return List<CountryMasterPojo>
	 * @throws BusinessException
	 */
	public List<CountryMasterPojo> getAllCountries(CountryMasterPojo countryMasterPojo)
			throws BusinessException;

	/**
	 * Method to send a an verification Email Message to System User
	 * 
	 * @param systemUserPojo
	 * @throws BusinessException
	 * @throws SystemConfigurationException
	 * @throws TechnicalException
	 */
	public TransactionStatus sendEmail(SystemUsersPojo systemUsersPojo) throws BusinessException,
			SystemConfigurationException, TechnicalException;
	
	/**
	 * Method to send a an verification Email Message to Supplier User
	 * 
	 * @param supplierMasterPojo
	 * @throws BusinessException
	 * @throws SystemConfigurationException
	 * @throws TechnicalException
	 */
	public TransactionStatus sendEmail(SupplierUsersPojo supplierMasterPojo) throws BusinessException,
			SystemConfigurationException, TechnicalException;
	
	
	/**
	 * Method to send a an verification Email Message to Buyer User
	 * 
	 * @param buyerUsersPojo
	 * @throws BusinessException
	 * @throws SystemConfigurationException
	 * @throws TechnicalException
	 */
	public TransactionStatus sendEmail(BuyerUsersPojo buyerUsersPojo) throws BusinessException,
			SystemConfigurationException, TechnicalException;

	/**
	 * Method to activate the Email Address
	 * 
	 * @param token
	 * @return TransactionStatus
	 * @throws BusinessException
	 * @throws TechnicalException
	 */
	public TransactionStatus activateEmail(String token) throws BusinessException, TechnicalException;

}
